Partial dead code elimination on predicated code regions
نویسندگان
چکیده
This paper presents the design, implementation and experimental evaluation of a practical region-based partial dead code elimination (PDE) algorithm on predicated code in the ORC compiler framework. Existing PDE algorithms are not applicable on predicated code due to the existence of if-converted branches in the program. The proposed algorithm processes all PDE candidates in a worklist and reasons about their partial deadness using predicate partition graphs. Our algorithm operates uniformly on individual hyperblocks as well as regions comprising basic blocks and hyperblocks. The result of applying our algorithm to a SEME (single-entry multiple-exit) region is optimal: partially dead code cannot be removed without changing the branching structure of the program or potentially introducing new predicate defining instructions. We present statistical evidence about the PDE opportunities in the 17 SPEC95 and SPEC00 integer benchmarks. Our algorithm achieves performance improvements in 12 out of the 17 benchmarks on an Itanium machine at small compilation overheads. Our results indicate that our algorithm can be used as a practical pass before instruction scheduling.
منابع مشابه
Region-Based Partial Dead Code Elimination on Predicated Code
This paper presents the design, implementation and experimental evaluation of a practical region-based partial dead code elimination (PDE) algorithm on predicated code in an existing compiler framework. Our algorithm processes PDE candidates using a worklist and reasons about their partial deadness using predicate partition graphs. It operates uniformly on hyperblocks and regions comprising bas...
متن کاملPartial Redundancy Elimination on Predicated Code
Partial redundancy elimination (PRE) is one of the most widespread optimizations in compilers. However, current PRE-techniques are inadequate to handle predicated code, i.e., programs where instructions are guarded by a 1-bit register that dynamically controls whether the effect of instruction should be committed or nullified. In fact, to exclude corrupting the semantics they must be overly con...
متن کاملCode Optimization as a Side E ect of Instruction Scheduling
An instruction scheduler utilizes code reordering techniques for generating schedules in which instructions can be issued without delays. In order to perform code reordering across branches, code motion is performed that hoists some instructions above branches and sinks others below branches. Following code reordering , compensation code must be introduced in order to preserve program semantics...
متن کاملA Code Motion Framework for Global Instruction Scheduling
A framework for global instruction scheduling is developed that progressively improves a given instruction schedule by eliminating delay slots in the schedule one at a time through the application of global code motions. The elimination of a delay slot is carried out in two steps: a goal oriented search which identiies a global code motion or a cascade of code motions that eliminate the delay w...
متن کاملCode optimization as a side effect of instruction scheduling
An instruction scheduler utilizes code reordering techniques for generating schedules in which instructions can be issued without delays. In order to perform code reordering across branches, code motion is performed that hoists some instructions above branches and sinks others below branches. Following code reordering , compensation code must be introduced in order to preserve program semantics...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Softw., Pract. Exper.
دوره 36 شماره
صفحات -
تاریخ انتشار 2006